<?php
class SalasController extends AppController {

	var $name = 'Salas';
	var $helpers = array('Html', 'Form', 'Ajax', 'chat.AjaxChat');
	var $components = array('RequestHandler');
	 
	function beforeFilter() {
		parent::beforeFilter(); 
		$this->Auth->allowedActions = array('index', 'add','deletePrivada');
	}
	
/*Salas normales: Amistosas y publicas
	Solo funciona si el tiposala_id de Amistoso=1 y el de Publico (4 levels)
*/
	function index() {
		//print_r($this->params);
		
		//print_r($this->Sala->find('count'));
		$this->Sala->recursive = 0;
		$salas=$this->Sala->find('all', array('conditions'=>array('Sala.tiposala_id <>' => 2, 'Sala.estado =' => 'Disponible')
							,'order' => array('Tiposala.nombre', 'Sala.nombre ASC')));
		$this->set('salas',$salas );
		//print_r($salas);
		//$this->set('salas', $this->paginate('Sala', array('Sala.tiposala_id <>' => 2, 'Sala.estado =' => 'Disponible')));
		if($this->Auth->user()){
			$user=array('user'=>$this->Auth->user('user'),'grupo_id'=>$this->Auth->user('grupo_id'),'username'=>$this->Auth->user('username'));
		}else{
			$user=null;	
		}
		
		$myPartido=$this->Sala->Partido->tieneOtrosPartidos($this->Auth->user('user'));
		if($myPartido){
			$this->set('myPartido',$myPartido);
		}else{
			$this->set('myPartido',null);
		}
		
		$this->set('user',$user);
		//Obtiene la cantidad de partidos activos en $salas
		$this->set('partidosActivos',$this->Sala->Partido->cantidadPartidosActivos($salas));
		//Para Ajax.PeriodicalUpdater en salas/index.ctp
		if($this->params['isAjax']){
			//si la peticion es ajax, actual la vista ajax_index.ctp
			$this->render('ajax_index');
		}
	}
	
	
/*Salas privadas:
	Solo funciona si el tiposala_id de Privado=2 
*/
	function indexPrivadas() {
		//print_r($this->params);
		
		//print_r($this->Sala->find('count'));
		$this->Sala->recursive = 0;
		$salas=$this->Sala->find('all', array('conditions'=>array('Sala.tiposala_id ' => 2, 'Sala.estado =' => 'Disponible')
							,'order' => array('Tiposala.nombre', 'Sala.nombre ASC')));
		$this->set('salas',$salas );
		
		
		/*$salasUser=$this->Sala->find('first', array('conditions'=>array('Sala.user_id ' => $this->Auth->user(),
									      'Sala.tiposala_id ' => 2)));
		
		$dueño=ClassRegistry::init('User')->find('first', array('conditions'=>array('User.user' => $salasUser['user_id'])));
		
		print_r($dueño['User']['username']);*/
		
		//$this->set('salas', $this->paginate('Sala', array('Sala.tiposala_id <>' => 2, 'Sala.estado =' => 'Disponible')));
		if($this->Auth->user()){
			$user=array('user'=>$this->Auth->user('user'),'grupo_id'=>$this->Auth->user('grupo_id'),'username'=>$this->Auth->user('username'));
		}else{
			$user=null;	
		}
		$this->set('user',$user);
		//Obtiene la cantidad de partidos activos en $salas
		$this->set('partidosActivos',$this->Sala->Partido->cantidadPartidosActivos($salas));
		//Para Ajax.PeriodicalUpdater en salas/index.ctp
		if($this->params['isAjax']){
			//si la peticion es ajax, actual la vista ajax_index.ctp
			$this->render('ajax_indexprivadas');
		}
	}
	
	
	
/*Por el momento no se usa luego*/
	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Sala Invalida', true));
			$this->redirect(array('action'=>'index'));
		}
		$this->set('sala', $this->Sala->read(null, $id));
	}

/**/
	function add() {         
                if(!$this->Auth->user()){
                        $this->Session->setFlash(__('Para agregar salas es necesario loguearse', true));
                        $this->redirect(array('controller' =>'salas','action'=>'indexPrivadas'));
                }
                if($this->Auth->user('grupo_id') > 2){ //Si el usuario es trial 
                        $this->Session->setFlash(__('Solo un usuario Premium o Administrador puede crear nuevas salas', true));
                        $this->redirect(array('controller' =>'salas','action'=>'indexPrivadas'));
                }
		if($this->Auth->user('grupo_id') < 3){
			$salasUsuario =  $this->Sala->find('all',
							   array('conditions' =>
								array('Sala.user_id' => $this->Auth->user('user'))));
			
			//print_r($salasUsuario);
			if($salasUsuario){
				$this->Session->setFlash(__('Ya tienes una sala privada, no puedes crear otra', true));
				$this->redirect(array('action'=>'indexPrivadas'));
			}
			
		}		
                if (!empty($this->data)) {
			$cantMaxUsuarios=ClassRegistry::init('Parametro')->find('first',array('conditions'=> array('Parametro.nombre' => 'cantMaxUsuarios')));
			$this->data['Sala']['cantmaxusuarios']=$cantMaxUsuarios['Parametro']['valor'];
                        $this->data['Sala']['estado']='Disponible';
                        $this->data['Sala']['user_id'] = $this->Auth->user('user');
                        
			$this->Sala->create();
			if ($this->Sala->save($this->data)) {
				$this->Session->setFlash(__('La sala ha sido creada', true));
				$this->redirect(array('action'=>'indexPrivadas'));
			} else {
				$this->Session->setFlash(__('La sala no pudo ser creada. Por favor intente de vuelta', true));
			}
                }
		
		if($this->Auth->user('grupo_id') == 1){ //Si el usuario es administrador puede crear cualquier Tipo de Sala
			$tiposalas =  $this->getNombresSalas();
			$this->set('tiposalas', $tiposalas );
		}else if($this->Auth->user('grupo_id') == 2){//Si el usuario es premium solo puede crear salas privadas
			$tiposalas = array('2' => 'privado');
			$this->set('tiposalas', $tiposalas );
		
		}
            //Estas lineas hay que agregar al juntar con la parte de Users
            //$users = $this->Sala->User->find('list');
            //$tiposalas = $this->Sala->Tiposala->find('list');
            //$users = $this->Sala->User->find('list');
            //$torneos = $this->Sala->Torneo->find('list');
            //$this->set(compact('users', 'tiposalas', 'users', 'torneos'));
                
        }

/*
	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid Sala', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
			if ($this->Sala->save($this->data)) {
				$this->Session->setFlash(__('The Sala has been saved', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('The Sala could not be saved. Please, try again.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Sala->read(null, $id);
		}
                $tiposalas =  $this->getNombresSalas();
                $this->set('tiposalas', $tiposalas );                
		//$users = $this->Sala->User->find('list');
		//$tiposalas = $this->Sala->Tiposala->find('list');
		//$users = $this->Sala->User->find('list');
		//$torneos = $this->Sala->Torneo->find('list');
		//$this->set(compact('users','tiposalas','users','torneos'));
	}*/

	function delete($id = null) {
			if(!$this->Auth->user()){
				$this->Session->setFlash(__('Para borrar salas es necesario loguearse', true));
				$this->redirect(array('controller' =>'salas','action'=>'indexPrivadas'));
			}
			if($this->Auth->user('grupo_id') > 1){ //Si el usuario no es administrador
				$this->Session->setFlash(__('Solo un usuario Administrador puede borrar esta sala', true));
				$this->redirect(array('controller' =>'salas','action'=>'indexPrivadas'));
			}
		
			if (!$id) {
				$this->Session->setFlash(__('Invalid id for Sala', true));
				$this->redirect(array('action'=>'index'));
			}
			if ($this->Sala->del($id)) {
				$this->Session->setFlash(__('Sala deleted', true));
				$this->redirect(array('action'=>'index'));
			}else{
				 $this->Session->setFlash(__('No se puede borrar la Sala,
							    hay jugadores dentro de la Sala', true));
				$this->redirect(array('action'=>'index'));                    
			}
	}

	function deletePrivada($id = null) {
			if(!$this->Auth->user()){
				$this->Session->setFlash(__('Para borrar salas es necesario loguearse', true));
				$this->redirect(array('controller' =>'salas','action'=>'indexPrivadas'));
			}
			
			if($this->Auth->user('grupo_id') > 2){ //Si el usuario es trial 
				$this->Session->setFlash(__('Solo un usuario Premium o Administrador puede borrar salas', true));
				$this->redirect(array('controller' =>'salas','action'=>'indexPrivadas'));
			}
			$salaPrivada =  $this->Sala->find('first',
							   array('conditions' =>
								array('Sala.sala' => $id)));


			//print_r($salaPrivada['Sala']['user_id']);
			//print_r($this->Auth->user('user'));
			if($this->Auth->user('user') == $salaPrivada['Sala']['user_id']){
				if (!$id) {
					$this->Session->setFlash(__('Invalid id for Sala', true));
					$this->redirect(array('action'=>'indexPrivadas'));
				}
				if ($this->Sala->del($id)) {
					$this->Session->setFlash(__('Sala deleted', true));
					$this->redirect(array('action'=>'indexPrivadas'));
				}else{
					$this->Session->setFlash(__('No se puede borrar la Sala,
								    hay jugadores dentro de la Sala', true));
					$this->redirect(array('action'=>'indexPrivadas'));                    
				}
			}
	}
        
	function estadisticaGeneral($tipo=1){
		if($tipo==1){
			$salas=$this->Sala->topPorcentajeWinners(1);
			$this->set('partidosActivos',$this->Sala->Partido->cantidadPartidosActivos($salas));
			$this->set('titulo', "Top 10 salas con mas partidos");
			$this->set('columna', "Equipos");
		}else{
			$salas=$this->Sala->topPorcentajeWinners(1);
			$this->set('partidosActivos',$this->Sala->Partido->cantidadPartidosActivos($salas));
			$this->set('titulo', "Top 10 salas con mas usuarios ahora");
			$this->set('columna', "Equipos");
		}
		$this->set('tipo', $tipo);
		$this->set('salas', $salas);
		$this->render('show_estadistica');
	}
	
	
        function getNombresSalas(){
            $tiposalas =  $this->Sala->Tiposala->find('all');
            
            $id_x_tiposala = null;
            foreach($tiposalas as $tiposala){
                $id_x_tiposala[$tiposala['Tiposala']['tiposala']] = $tiposala['Tiposala']['nombre'];
            }
                
            return array( $id_x_tiposala );
            
        }
}
?>